package com.neusoft.databus.common.utils;

import org.apache.commons.lang3.StringUtils;

public class StringFormatUtils {

    /**
     * 中文标点符号转英文字标点符号
     *
     * @param str 原字符串
     * @return str 新字符串
     */
    public static final String cToe(String str) {
        final String[] regs = {"！", "，", "。", "；", "~", "《", "》", "（", "）", "？",
                "”", "｛", "｝", "“", "：", "【", "】", "”", "‘", "’", "!", ",",
                ".", ";", "`", "<", ">", "(", ")", "?", "'", "{", "}", "\"",
                ":", "{", "}", "\"", "\'", "\'" };
        for (int i = 0; i < (regs.length / 2); i++) {
            str = str.replaceAll(regs[i], regs[i + (regs.length / 2)]);
        }
        return str;
    }

    /**
     * 全角转半角:
     *
     * @param fullStr
     * @return
     */
    public static final String full2Half(final String fullStr) {
        if (StringUtils.isEmpty(fullStr)) {
            return fullStr;
        }
        final char[] c = fullStr.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if ((c[i] >= 65281) && (c[i] <= 65374)) {
                c[i] = (char) (c[i] - 65248);
            } else if (c[i] == 12288) { // 空格
                c[i] = (char) 32;
            }
        }
        return new String(c);
    }

    /**
     * 半角转全角
     *
     * @param halfStr
     * @return
     */
    public static final String half2Full(final String halfStr) {
        if (StringUtils.isEmpty(halfStr)) {
            return halfStr;
        }
        final char[] c = halfStr.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if (c[i] == 32) {
                c[i] = (char) 12288;
            } else if (c[i] < 127) {
                c[i] = (char) (c[i] + 65248);
            }
        }
        return new String(c);
    }
}
